入门
1. 简介
Go语言(Golang、Golanguage)。2007年诞生,2009年11月10日开源,Google。
特点:能达到静态编译语言的安全和性能,又达到动态语言开发维护的高效率。
- 继承C语言的语法、调用、指针等。
- 引入包的概念。
- 垃圾自动回收。
- 天然支持并发。(语言层面支持;goroutine轻量级线程;CPS并发模型[Communicating Sequential Proccess])。
- 吸收管道通信机制channel,实现不同goroute的通信。
- 函数可以返回多个值。
- 切片slice、延时执行defer。
方向:区块链研发、服务端/游戏软件、分布式/云计算软件。
区块链:去中心化,让人人都可以成为参与数据库的建立。
- 区块链技术,简称BT(Blockchain technology),被称之为分布式账本技术,是一种互联网数据库技术,特点是去中心化,公开透明。
2. 创始
Ken Thompson,1983年获得图灵奖。是C语言、B语言和Unix的主要发明人或创始者。
Rob Pike,贝尔实验室的Unix团队,Plan9操作系统计划成员。UTF-8编码。
- Robert Griesemer,Java的HotSpot编译器,Chrome的JavaScript引擎V8.
3. 安装
百度。下包配变量。
brew install go
值得注意的是,GO的变量中有GOROOT指向工程文件夹,否则会报错。如果是VSCode,安装相应的插件后,可以通过虚拟环境指定该变量。
.vscode/settings.json
:
{
"go.toolsEnvVars": {
"GOROOT": "/Users/admin/goproject"
}
}
# 查看go的环境变量
go env
# 无模块支持,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
go env -w GO111MODULE=off
4. 目录结构
admin@Mac-Pro goproject % tree
.
└── src
└── go_code
└── project01
├── main
└── package
5 directories, 0 files
5. 上手
编写。
main.go
// 每个文件都必须有归属一个包 package main // 导包 import "fmt" // func 函数 // main 函数入口 func main() { // 使用fmt包的Print函数 fmt.Print("hello") }
编译运行。
有两种方式:
运行
go build <文件名>
生成可执行文件,然后执行可执行文件。(常用)通过build出来会集成环境,无需安装go环境也能执行。使用
-o
参数可以指定输出的文件名。这里和gcc差不太多。直接运行
go run <文件名>
即可运行。使用run执行也有build过程,只不过不会输出文件,一般用于debug。类似于python。
6. 注意点
- Go的源文件以go为扩展名。
- 主函数执行入口是main函数。
- 严格区分大小写。
- 语句不需要加分号(在每句话后面默认会添加)。
- 是一行行编译的,不能把多个语句写在同一行内,否则报错。
- 如定义的变量或者import的包没有使用到,则编译时报错。
- 大括号成对出现。